console.log(process.env.NODE_ENV)

console.log(process.env.VUE_APP_BASE_API)

// 引入path模块（node）
const path = require('path')
const CompressionPlugin = require('compression-webpack-plugin')
const webpack = require('webpack')
const productionGzipExtensions = ['js', 'css'] // 压缩js 和css文件
// 将文件组成绝对路径
function resolve(dir) {
  return path.join(__dirname, dir)
}

// vue.config.js
module.exports = {
  // 部署应用包时的基本 URL
  // baseUrl从 Vue CLI 3.3 起已弃用，不要使用
  // publicPath: './',
  publicPath: './',

  // 当运行 vue-cli-service build 时生成的生产环境构建文件的目录。
  // 注意目标目录在构建之前会被清除 (构建时传入 --no-clean 可关闭该行为)。
  outputDir: 'dist',

  // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
  assetsDir: 'static',

  // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。
  // lintOnSave: process.env.NODE_ENV === 'development',
  lintOnSave: false,

  // optimization: {
  //   minimize: false
  // },

  // 去掉文件名中的 hash
  filenameHashing: false,

  // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  chainWebpack: config => {
    // 添加别名
    config.resolve.alias
      .set('@', resolve('src'))
      .set('assets', resolve('src/assets'))
      .set('components', resolve('src/components'))
      .set('utils', resolve('src/utils'))
      .set('api', resolve('src/api'))
      .set('views', resolve('src/views'))

    // set svg-sprite-loader
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()

    // 解决ie11兼容ES6
    // config.entry('main').add('babel-polyfill')
    // // 开启图片压缩
    // config.module
    //   .rule('images')
    //   .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
    //   .use('image-webpack-loader')
    //   .loader('image-webpack-loader')
    //   .options({ bypassOnDebug: true })

    // 开启js、css压缩
    if (process.env.NODE_ENV === 'production') {
      config.plugin('compressionPlugin').use(
        new CompressionPlugin({
          algorithm: 'gzip',
          test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
          threshold: 10240,
          minRatio: 0.8
        })
      )
      config.plugin('chunkPlugin').use(webpack.optimize.LimitChunkCountPlugin, [
        {
          maxChunks: 1, // 必须大于或等于 1
          minChunkSize: 10000
        }
      ])
    }
  },
  configureWebpack: {
    output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.js】
      filename: process.env.NODE_ENV === 'production' ? `static/js/circle-rpc.js` : '[name].[hash:8].js',
      chunkFilename: process.env.NODE_ENV === 'production' ? `static/js/circle-rpc.js` : '[name].[hash:8].js'
      // filename: '[name].js',
      // chunkFilename: '[name].js'
    }
  },

  // css处理器
  css: {
    // 修改打包后的文件名称
    extract: {
      filename: process.env.NODE_ENV === 'production' ? `static/css/circle-rpc.css` : '[name].[hash:8].css',
      chunkFilename: process.env.NODE_ENV === 'production' ? `static/css/circle-rpc.css` : '[name].[hash:8].css'
    },
    loaderOptions: {
      sass: {
        data: '@import "~@/styles/variables.scss";@import "~@/styles/mixin.scss";'
      },
      stylus: {
        'resolve url': true,
        import: []
      }
    }
  },

  // 本地服务器配置
  devServer: {
    disableHostCheck: true, //  新增该配置项
    // open: true, // 配置自动启动浏览器
    // host: 'localhost',
    // host: '192.168.19.107',
    // port: 8080, // 端口号
    // 配置多个代理
    // proxy: {
    //   '/api': {
    //     target: 'https://webapi.hsy884.com', // 要访问的接口域名
    //     changeOrigin: true, // 开启代理：在本地会创建一个虚拟服务端，然后发送请求的数据，并同时接收请求的数据，这样服务端和服务端进行数据的交互就不会有跨域问题
    //     ws: true, // 是否开启websocket
    //     pathRewrite: {
    //       '^/api': '/api' // 这里理解成用'/api'代替target里面的地址,比如我要调用'http://40.00.100.100:3002/user/add'，直接写'/api/user/add'即可
    //     }
    //   }
    // },
    before(app) {
      // app.post('/Store/getFilterList', (req, res, next) => {
      //   res.json(mockdata)
      // })
      // 根据你的url规则来定
      // app.all('/api/*', (req, res) => {
      //   // 根据你的json数据地址来适配，是否和请求url完全一致
      //   const url = req.path.replace('/api', '')
      //   // json数据
      //   const filePath = `/public/mock/${url}.json`
      //   // json数据绝对地址
      //   const abPath = path.join(__dirname, filePath)
      //   const data = require(abPath)
      //   res.json(data)
      // })
    }
  },

  // 插件配置
  pluginOptions: {
    'cube-ui': {
      postCompile: true,
      theme: false
    }
  },

	
}
